#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPixmap>
#include <QPainter>
#include <QTimer>
#include <QMouseEvent>
#include <vector>

#include "barrier.h"
#include "fufu.h"
#include "ground.h"
#include "introduce.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent=nullptr);
    ~MainWindow();

    void initWindow();//初始化窗口
    void paintEvent(QPaintEvent *event);  //绘图事件
    void keyPressEvent(QKeyEvent *event);  //键盘按压事件
    void mousePressEvent(QMouseEvent *event);//鼠标按压事件
    void playgame();   //开始游戏
    void gameover();   //游戏结束
    void updateposition();   //更新坐标
    void collectdetection(); //碰撞检测
    void sprint();          //角色冲刺(场景所有对象加速)
    void addBarrier();      //添加障碍物

    std::vector<barriers*>Barriers;     //管理屏幕中的障碍物
    std::vector<barriers*>::iterator it;//定义迭代器it遍历vector

    QPixmap background;
    QTimer m_timer;        //刷新屏幕计时器
    QTimer sprint_timer;           //冲刺持续时间计时器
    QTimer sprint_interval_timer;  //冲刺间隔时间计时器
    QTimer add_Barrier_interval_timer; //生成障碍物计时器
    QTimer add_stone_intervai_timer;   //生成圣晶石间隔时间计时器
    QTimer protected_timer;            //无敌时间
    bool sprint1;         //是否已经冲刺一次
    bool sprint2;        //是否已经冲刺两次
    int i;                    //障碍物类型
    int score;           //分数

    grounds Grounds;  //地面对象
    fufu fufu;

    introduce *intro=new introduce;   //游戏介绍窗口

private slots:
    void on_start_clicked();

    void on_restart_clicked();

    void on_introduce_clicked();

    void on_mainmenu_clicked();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
